#ifndef IMAGE_H_
#define IMAGE_H_

#include <stdlib.h>
#include <stdio.h>

typedef unsigned char uchar;
typedef unsigned int uint;
enum {UNKOWN,PBM_ASCII,PGM_ASCII,PPM_ASCII,PBM_BINARY,PGM_BINARY,PPM_BINARY} PNM;

typedef struct
{
	uchar* ImageData;
	uint width; 
	uint height;
	uint nChannels;
	uint depth;
}sImage;

extern sImage* CreatesImage(uint width, uint height, uint nChannels, uint depth);	/* cr�ation d'un image de widthxheight pixels avec nChannels cannaux*/
extern void ReleasesImage(sImage* im); 									/* lib�ration de l'espace m�moire*/
extern sImage* LoadImageFromPnm(const char* filename);					/* lecture d'un image pnm*/
extern void SaveImageToPnm(sImage* im,const char* filename, uint type);		/* sauvegarde de l'image au format pnm*/
extern uchar* GetPix(sImage* im, uint x, uint y);							/* retourne un pointeur sur le pixel plac� en x et y*/
extern sImage* Histo(sImage* im, uint width, uint height, uint nChannels, uint depth); /* creation d'une image histogramme */
extern sImage* HistoCumul(sImage* im, uint width, uint height, uint nChannels, uint depth); /* creation d'une image histogramme cumulaire */
extern void Cumul(sImage* im); /* Modification d'une image avec la valeur cumulaire */

#endif
